home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / C64 / T-TPUG Old Monthly Disks / (c)th.d64 / artillery.c (.txt) < prev    next >
Commodore BASIC  |  2007-02-11  |  14KB  |  103 lines

  1. 1 REM*ARTILLERY 64 BY ROGER D. BURGE,   #2667, TPUG, TORONTO, ONTARIO, CANADA
  2. 9 POKE45,147:POKE46,32:POKE51,64:POKE52,38:POKE55,64:POKE56,38:CLR:POKE53272,27
  3. 10 GOSUB5590:GOSUB8050
  4. 70 GOSUB2890:POKE679,.:SYSCX:W=(D*RND(.)):W=W/D:R=INT(D*RND(.)+U):IFR=UTHENW=-W
  5. 130 G=9.8:H=.04:T=.:VX=.:VY=.:X=.:Y=.:R=INT(D*RND(.)+U):LP=.:A=45:V=20:C$="":IFPL=DTHENLP=36:C$=""
  6. 250 RR=(RND(.)):R=INT(D*RND(.)+U):IFRR>.2THENRR=.2
  7. 310 GOSUB4630:POKE56325,58:POKE782,-(PL=U)
  8. 370 SYS820:JC=PEEK(JS):IFJC=4THENA=A+U
  9. 430 IFJC=DTHENA=A-U
  10. 490 IFA<.THENA=.
  11. 550 IFA>90THENA=90
  12. 610 IFJC=UTHENV=V+U
  13. 670 IFJC=TRTHENV=V-U
  14. 730 IFV<UTHENV=U
  15. 790 IFV>FTTHENV=FT
  16. 850 PRINTC$""SPC(LP)"  "SPC(LP)RIGHT$(STR$(A),D):PRINTC$""SPC(LP)"  "SPC(LP)RIGHT$(STR$(V),D):IFJC=FTHENA=(null)/180*A:GOTO1150
  17. 1030 IFJC=ZTHEN6370
  18. 1090 GOTO370
  19. 1150 S(PL-U)=S(PL-U)+U:POKESR,WT:POKEK+Z,WT:POKESN,TW:FORI=QTO7STEP-U:POKEVO,I:FORII=.TOSV*TR:NEXT:NEXT:POKEK+Z,68:POKEVO,Q:ONPLGOTO1270,1330
  20. 1270 X=X1:Y=Y1+U:XI=X:YI=Y:PC=FNCL(.):S=U:GOTO1390
  21. 1330 S=-U:X=X2:Y=Y2+U:XI=X:YI=Y:PC=FNCL(.)
  22. 1390 YN=Y-Z:VY=SIN(A)*V:VX=S*(COS(A)*V):FORI=228TO168STEP-U:NEXTI:POKESR,WT
  23. 1450 T=T+H:X=XI+VX*T-W*T^D:Y=YI+VY*T-G*T^D:POKESN,ABS(Y*Z):POKESR,SV*-(YN>Y)+WT*-(YN<Y):YN=Y:PK=FNCL(.):PK=INT(PK):POKEPC,BS:IFX<.ORX>T9THENPOKESR,.:GOTO2410
  24. 1690 PC=PK:IFY<.THENPOKESR,.:GOTO2170
  25. 1750 IFPEEK(PK)<>BSTHENPOKESR,.:GOTO1930
  26. 1810 POKEPK,B:GOTO1450
  27. 1930 IFPEEK(PK)=233THENPOKEPK,92:H1=H1+U:H=U:PL=U:GOTO2710
  28. 1990 IFPEEK(PK-FT)=233THENPOKEPK-FT,92:H1=H1+U:H=U:PL=U:PK=PK-FT:GOTO2710
  29. 2050 IFPEEK(PK)=223THENPOKEPK,92:H2=H2+U:H=U:PL=D:GOTO2710
  30. 2110 IFPEEK(PK-FT)=223THENPOKEPK,92:H2=H2+U:H=U:PL=D:PK=PK-FT:GOTO2710
  31. 2170 IFY>24THEN2410
  32. 2230 POKESN,TW:POKESR,WT:KK=PEEK(PK):POKEPK,BS:POKEPK,KK:POKEPK,BS:POKEKP,KK:POKEPK,BS:POKEPK,KK:POKEPK,BS:POKEPK,KK
  33. 2410 FORI=UTO50:NEXT:POKESR,.:IFPL=UTHENPL=D:GOTO2590
  34. 2530 IFPL=DTHENPL=U
  35. 2590 PRINT""SPC(LP)"  "SPC(LP)"  ":IFH=UTHENH=.:GOTO6370
  36. 2650 GOTO130
  37. 2710 POKEK+F,WT:POKESN,D:POKESR,WT:FORI=QTO.STEP-U:POKEVO,I:FORII=.TOQ:POKEPK+K,II:FORT=.TOSV:NEXT:NEXT:NEXT:POKESR,.:POKEVO,Q:POKEPK,BS:POKEK+F,68:FORI=UTOWT:NEXT:GOTO2410
  38. 2890 POKE56325,255:PRINT"[147][206]  "SPC(34)"  [205]";:PRINT"[193]  "SPC(34)"  [193]";:POKE679,TW:SYSCX:R=INT(Z*RND(.)+U):FORY=.TOR-U:FORX=.TO11:POKEFNCL(.),224:NEXTX:NEXTY:Y1=Y:X1=INT(4*RND(.)+U):X=X1:POKEFNCL(.)+K,D:POKEFNCL(.),223:FORY=.TOF:FORX=TWTO27
  39. 3250 POKEFNCL(.),BL:NEXTX:NEXTY:R=INT(Z*RND(.)+U):FORY=.TOR-U:FORX=28TOT9:POKEFNCL(.),224:NEXTX:NEXTY:Y2=Y:X2=INT(3*RND(.)+35):X=X2:POKEFNCL(.)+K,Z:POKEFNCL(.),233:P1=INT(TR*RND(.)+U):P1=P1+14:P2=INT(TR*RND(.)+U):P2=25-P2:I=INT(D*RND(.)+U)
  40. 3490 IFI=UTHENL1=225:GOTO3610
  41. 3550 L1=254
  42. 3610 I=INT(D*RND(.)+U):IFI=UTHENL2=97:GOTO3730
  43. 3670 L2=252
  44. 3730 X=P1:Y=Z:POKEFNCL(.),L1:FORX=P1+UTOP2-U:Y=Z:POKEFNCL(.),BL:NEXTX:X=P2:POKEFNCL(.),L2:FORY=7TOSV:RR=INT(Z*RND(.)+U):IFRR=UTHENA1=P1+D:L1=254
  45. 3970 IFRR=2THENA1=P1+U:L1=254
  46. 4030 IFRR>DTHENA1=P1:L1=225
  47. 4090 RR=INT(Z*RND(.)+U):IFRR=UTHENA2=P2-D:L2=252
  48. 4150 IFRR=DTHENA2=P2-U:L2=252
  49. 4210 IFRR>DTHENA2=P2:L2=97
  50. 4270 IFA2<A1ORA1=A2THEN4570
  51. 4330 X=A1:POKEFNCL(.),L1:FORX=A1+1TOA2-U:POKEFNCL(.),BL:NEXTX:X=A2:POKEFNCL(.),L2:P1=A1:P2=A2:NEXTY
  52. 4570 PX=P1:PY=Y:GOSUB5410:RETURN
  53. 4630 IFR=UTHENRR=-(RR)
  54. 4690 W=W+(RR/INT(Z*RND(.)+4)):IFW<-DTHENW=-D
  55. 4810 IFW>DTHENW=D
  56. 4870 WD=240:WH=INT(ABS(W*80)):IFWH>QTHENWH=Q
  57. 4930 IFW>.THEN5110
  58. 4990 X=PX:Y=PY:POKEFNCL(.),103:Y=Y+U:POKEFNCL(.),103:POKEFNCL(.)+U,104:GOTO5230
  59. 5110 X=PX:Y=PY:POKEFNCL(.),103:Y=Y+U:POKEFNCL(.),102:POKEFNCL(.)+U,BS
  60. 5230 PRINT""SPC(20)"[152]  ";:WF=INT(ABS(W*80)):W$=RIGHT$(STR$(WF),2):WF=255-(WF*1.55+TW):PRINT""SPC(14)"WIND: "W$" KPH":RETURN
  61. 5410 H1$="00"+RIGHT$(STR$(H1),LEN(STR$(H1))-U):H1$=RIGHT$(H1$,TR):H2$="00"+RIGHT$(STR$(H2),LEN(STR$(H2))-U):H2$=RIGHT$(H2$,TR):PRINT"[152]"H1$SPC(BS)H2$"":RETURN
  62. 5590 PRINT"[147]":POKE53281,1:POKE53280,1:DEFFNCL(R)=1024.5+INT(24.5-Y)*FT+X:X=RND(-TI):Y=X:B=46:U=1:FT=40:K=54272:BS=32:SN=K+U:BL=160:Z=6:D=2:VO=K+24:SR=K+4:WT=129:SV=17:T9=39:TW=12:F=5:JS=251:TR=3:Q=15:PL=U
  63. 5830 DIMA(U),S(U):CX=49152:SP=53248:POKESP+21,.:POKESP+28,.:POKESP+16,.:POKESP+29,.:FORT=T9TO45:POKESP+T,TW:NEXT:FORT=UTO13STEPD:POKESP+T,50:NEXT:FORT=.TOZ:POKE2040+T,153+T:NEXT:FORT=.TOZ:POKESP+T*D,104+T*24:NEXT:FORT=KTOK+24:POKET,.:NEXT:POKEVO,Q:POKEK+F,68:POKEK+Z,68
  64. 6190 FORT=CXTO49209:READA:POKET,A:NEXT:FORT=820TO891:READA:POKET,A:NEXT:RETURN
  65. 6370 GOSUB5410:GOSUB7330:FORT=.TO500:NEXT:POKESP+23,127:PRINT"[147][144]"SPC(11)"ACCURACY  RATINGS:":PRINT""SPC(10)" PLAYER 1 = "A$(.)"% ":PRINT""SPC(10)" PLAYER 2 = "A$(U)"% ":A$="":PRINTA$"[144][213][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][201]"
  66. 6670 PRINTA$"[221]      OPTIONS:      [221]":PRINTA$"[221]                    [221]":PRINTA$"[221] [211]1 : CONTINUE GAME [221]":PRINTA$"[221]                    [221]":PRINTA$"[221] [211]3 : NEW GAME      [221]":PRINTA$"[221]                    [221]"
  67. 6850 PRINTA$"[221] [211]5 : QUIT          [221]":PRINTA$"[202][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][203]":PRINTSPC(17)"[151]SCORES":A$="":POKE198,.:PRINTSPC(TW)" PLAYER 1 = "H1$"[160]":PRINTSPC(TW)" PLAYER 2 = "H2$" "
  68. 7030 GETA$:IFA$=""THEN7030
  69. 7090 IFA$="[133]"THENPOKESP+23,.:GOTO70
  70. 7150 IFA$="[134]"THENRUN
  71. 7210 IFA$="[135]"THEN10870
  72. 7270 GOTO7030
  73. 7330 IFS(.)=.THENA(.)=.:GOTO7450
  74. 7390 A(.)=H1*100/S(.)
  75. 7450 IFS(U)=.THENA(U)=.:GOTO7570
  76. 7510 A(U)=H2*100/S(U)
  77. 7570 FORT=.TOU:IFINT(A(T))=A(T)THEN7810
  78. 7630 AV=A(T)-INT(A(T)):A$(T)="000"+MID$(STR$(INT(A(T))),D)+".":A$(T)=RIGHT$(A$(T),4):Q$=LEFT$(STR$(AV),TR)+"00":Q$=MID$(Q$,TR):A$(T)=A$(T)+LEFT$(Q$,D):GOTO7990
  79. 7810 IFA(T)=100THENA$(T)="100.00":GOTO7990
  80. 7870 IFA(T)=.THENA$(T)="000.00":GOTO7990
  81. 7930 A(T)=100+A(T):A$(T)="0"+RIGHT$(STR$(A(T)),D)+".00"
  82. 7990 NEXT:RETURN
  83. 8050 POKESP+23,127:POKESP+21,127:PRINT"[152]@@@@@@@@@@"SPC(20)"@@@@@@@@@@":PRINT"@@@@@@@@@@"SPC(20)"@@@@@@@@@@":PRINT"NEED INSTRUCTIONS? (Y/N)":POKE198,.
  84. 8230 GETA$:IFA$=""THEN8230
  85. 8290 IFA$="N"THENPOKESP+23,.:RETURN
  86. 8350 IFA$="Y"THEN8470
  87. 8410 GOTO8230
  88. 8470 PRINT"[147]":POKESP+23,.:PRINT"FOR 2 PLAYERS, REQUIRES 2 JOYSTICKS.":PRINT"[151]THE OBJECT OF THIS GAME IS TO LOAD &   AIM YOUR ARTILLERY FOR A ";:PRINT"STRIKE AGAINST YOUR OPPONENT ON THE FAR SIDE OF THE    MOUNTAIN."
  89. 8650 PRINT" CHANGE THE ANGLE OF YOUR FIRE BY       PUSHING YOUR JOYSTICK UP OR";:PRINT" DOWN.  UP   INCREASES THE ANGLE, DOWN DECREASES IT.":PRINT"CHANGE THE AMOUNT OF GUN POWDER USED BYPRESSING THE JOYSTICK ";
  90. 8830 PRINT"RIGHT TO INCREASE,LEFT TO DECREASE.":PRINT"YOUR ANGLE READING IS INDICATED ON THE SCREEN BY THIS SYMBOL - [206][146][151].";:PRINT"THE AMOUNT OFPOWDER (IN KILOGRAMS) IS SYMBOLISED     BY - [193][146][151]."
  91. 9010 PRINT"YOUR SHOT WILL BE AFFECTED BY THE WIND.ITS DIRECTION IS INDICATED";:PRINT" BY THE FLAG  AT THE TOP OF THE MOUNTAIN. ITS SPEED ISSHOWN AT THE ";:PRINT"BOTTOM OF THE SCREEN."
  92. 9190 PRINTSPC(5)" PRESS SPACE BAR TO CONTINUE. ":POKE198,.
  93. 9250 GETA$:IFA$<>" "THEN9250
  94. 9310 PRINT"[147][151]WHEN YOUR ANGLE & CHARGE ARE SET, PRESSTHE FIRE BUTTON.":PRINT"PLAYER 1 (RED) USES JOYSTICK #1,       PLAYER 2 (BLUE) USES JOYSTICK #2.":PRINT"YOU MAY END THE GAME ANYTIME BY PUSHINGTHE UP ARROW KEY (^[146])."
  95. 9490 PRINTSPC(14)" GOOD LUCK!":PRINT" PRESS SPACE BAR TO PLAY ARTILLERY 64 ":POKE198,.
  96. 9610 GETA$:IFA$<>" "THEN9610
  97. 9670 RETURN:DATA162,.,189,.,4,201,32,208,6:DATA173,167,2,157,.,216:DATA189,.,5,201,32,208,6:DATA173,167,2,157,.,217:DATA189,.,6,201,32,208,6:DATA173,167,2,157,.,218:DATA189,.,7,201,32,208,6:DATA173,167,2,157,.,219
  98. 10210 DATA232,208,201,96:DATA185,.,220,41,15:DATA201,7,208,5,162,1,56,176,29:DATA201,13,208,5,162,2,56,176,20:DATA201,11,208,5,162,3,56,176,11:DATA201,14,208,5,162,4,56,176,2:DATA162,.:DATA134,251:DATA185,.,220,41,16
  99. 10750 DATA201,.,208,7,169,5,133,251,56,176,10,165,197,201,54,208,4:DATA169,6,133,251,96
  100. 10870 POKE198,.:SYS65418:SYS65412:POKESP+21,.:END:PRINT"    [147]L[207]"CHR$(34)"X"CHR$(34);
  101. 10871 PRINT",8":POKESP+23,.:POKE198,5:POKE631,13:POKE632,82:POKE633,85:POKE634,78
  102. 10872 POKE635,13:END
  103.